// 发送POST请求获取座位数据
function fetchSeatData() {
    const xhr = new XMLHttpRequest();
    xhr.open("POST", "/init_info", true);
    xhr.setRequestHeader("Content-Type", "application/json");

    xhr.onload = function () {
        if (xhr.status === 200) {
            const data = JSON.parse(xhr.responseText);
            generateSeatChart(data.col, data.names);
        }
    };

    xhr.onerror = function () {
        console.error("请求失败");
    };

    xhr.send();
}

// 页面加载后请求数据
window.onload = fetchSeatData;

// 发送座位数据到后端
function sendSeatDataToServer() {
    const seats = document.querySelectorAll(".seat");
    const names = Array.from(seats).map(seat => seat.innerText);

    const xhr = new XMLHttpRequest();
    xhr.open("POST", "/write_info", true);
    xhr.setRequestHeader("Content-Type", "application/json");

    xhr.onload = function () {
        if (xhr.status === 200) {
            // console.log("座位信息已发送成功");
        }
    };

    xhr.onerror = function () {
        console.error("发送座位信息失败");
    };

    xhr.send(JSON.stringify({
        names
    }));
}


// 定义随机选择函数
var isSelecting = false;  // 控制是否在点名过程中
function random_int_show_name() {
    // 获取所有子元素
    var elements = seatChart.getElementsByTagName("*");
    var attempts = 12;  // 随机次数


    // 如果正在点名过程，则直接返回，避免重复触发
    if (isSelecting) return;

    // 设置标志位为正在选择状态
    isSelecting = true;

    // 在每次执行时，先清除所有元素的name_show样式和动画
    for (var i = 0; i < elements.length; i++) {
        elements[i].classList.remove("name_show");
        elements[i].style.animation = ""; // 清除动画样式
    }

    let count = 0;  // 初始化尝试计数器
    let currentHighlight = null;  // 存储当前选中元素

    function animate() {
        // 清除上一个选中元素的name_show样式
        if (currentHighlight) {
            currentHighlight.classList.remove("name_show");
        }

        // 生成一个随机索引并选择元素
        var randomIndex = Math.floor(Math.random() * elements.length);
        console.log(randomIndex);
        currentHighlight = elements[randomIndex];

        // 内容为True
        if (!currentHighlight.textContent) {
            count--;
        }

        // 为当前选中的元素添加name_show样式
        currentHighlight.classList.add("name_show");

        count++;

        // 检查是否达到最大尝试次数
        if (count < attempts) {
            // 未达到12次则继续随机选择
            setTimeout(animate, 200);  // 200ms后再次随机
        } else {
            // console.log("最终被点名的元素是:", currentHighlight);
            // 结束时的样式，例如保持闪烁
            currentHighlight.style.animation = "highlight 1s ease-in-out infinite"; // 保持闪烁

            // 动画结束后重置标志位，允许下次点名
            isSelecting = false;
        }
    }

    // 开始第一次随机选择
    animate();
}